home *** CD-ROM | disk | FTP | other *** search
/ Aminet 7 / Aminet 7 - August 1995.iso / Aminet / text / hyper / MiniView_37_1.lha / MiniView / Src / MiniView.c < prev   
Encoding:
C/C++ Source or Header  |  1995-05-05  |  2.5 KB  |  131 lines

  1. #include <proto/exec.h>
  2. #include <proto/dos.h>
  3. #include <proto/amigaguide.h>
  4. #include <exec/memory.h>
  5.  
  6. #include "MiniView_ver.h"
  7.  
  8. #define TEMPLATE    "Sorry, no extra help available...\n" \
  9.                     "DataBase/A,Doc=Document/K,Line/N,PS=PubScreen/K,Port=PortName/K"
  10.  
  11. //                  01234567890123456789012345678901234567890123456789012345678901234
  12.  
  13. #define TOFFS        (sizeof(TEMPLATE)-64)
  14.  
  15.  
  16. typedef struct Library LIB;
  17. typedef struct RDArgs ARGS;
  18. typedef struct NewAmigaGuide NAG;
  19.  
  20. extern LONG MiniView(VOID);
  21.  
  22.  
  23. LONG
  24. MiniView(VOID)
  25. {
  26.     LONG RC = 20L;
  27.  
  28.     LIB *SysBase = *((LIB **) 4L);
  29.     LIB *DOSBase = OpenLibrary("dos.library", 37L);
  30.  
  31.     if (DOSBase)
  32.     {
  33.         extern const TEXT AGName[];
  34.  
  35.         LIB *AmigaGuideBase = OpenLibrary(AGName, 38L);
  36.  
  37.         if (AmigaGuideBase)
  38.         {
  39.             ARGS *dobj = (ARGS *) AllocDosObject(DOS_RDARGS, NULL);
  40.  
  41.             if (dobj)
  42.             {
  43.                 NAG *nag = AllocVec(sizeof(*nag), MEMF_PUBLIC | MEMF_CLEAR);
  44.  
  45.                 if (nag)
  46.                 {
  47.                     ARGS *args;
  48.                     LONG argv[6];
  49.  
  50.                     for (RC = 0; RC < 6; ++RC)
  51.                         argv[RC] = NULL;
  52.  
  53.                     RC = 10L;
  54.  
  55.                     dobj->RDA_ExtHelp = TEMPLATE;
  56.  
  57.                     if (args = ReadArgs(&(dobj->RDA_ExtHelp[TOFFS]), argv, dobj))
  58.                     {
  59.                         VOID *agh;
  60.  
  61.                         nag->nag_Name = (TEXT *) argv[0];
  62.                         nag->nag_Flags = HTF_CACHE_NODE | HTF_CACHE_DB | HTF_UNIQUE;
  63.  
  64.                         if (argv[1])
  65.                             nag->nag_Node = (TEXT *) argv[1];
  66.  
  67.                         if (argv[2])
  68.                             nag->nag_Line = *((LONG *) argv[2]);
  69.  
  70.                         if (argv[3])
  71.                             nag->nag_PubScreen = (TEXT *) argv[3];
  72.  
  73.                         if (argv[4])
  74.                             nag->nag_ClientPort = (TEXT *) argv[4];
  75.  
  76.                         SetIoErr(0L);
  77.  
  78.                         if (agh = OpenAmigaGuideA(nag, NULL))
  79.                         {
  80.                             LONG R2 = IoErr();
  81.  
  82.                             if (R2 == 0L)
  83.                                 RC = 0L;
  84.                             else
  85.                                 SetIoErr(R2);
  86.  
  87.                             CloseAmigaGuide(agh);
  88.                         }
  89.                         else
  90.                         {
  91.                             RC = IoErr();
  92.                             PrintFault(RC, (TEXT *) argv[0]);
  93.                         }
  94.                         FreeArgs(args);
  95.                     }
  96.                     else
  97.                         PrintFault(IoErr(), NULL);
  98.  
  99.                     FreeVec(nag);
  100.                 }
  101.                 else
  102.                     PrintFault(ERROR_NO_FREE_STORE, NULL);
  103.  
  104.                 FreeDosObject(DOS_RDARGS, dobj);
  105.             }
  106.             else
  107.                 PrintFault(ERROR_NO_FREE_STORE, NULL);
  108.  
  109.             CloseLibrary(AmigaGuideBase);
  110.  
  111.         }
  112.         else
  113.             PrintFault(ERROR_INVALID_RESIDENT_LIBRARY, AGName);
  114.  
  115.         CloseLibrary(DOSBase);
  116.     }
  117.     return RC;
  118. }
  119.  
  120. static const TEXT VersTag[]     = "$VER: " VSTR;
  121. static const TEXT Compiled[]     = "Compiled on " __DATE__ " at " __TIME__;
  122. static const TEXT Copyright[]     = "Copyright © 1994,95 Klaus Alexander Seistrup @ Magnetic Ink";
  123. static const TEXT EMail[]         = "E-mail: kas@mink.ping.dk";
  124.  
  125. const TEXT AGName[]     = "amigaguide.library";
  126.  
  127.  
  128. /*
  129. **    EOF
  130. */
  131.